#include <Eigen/Core>
#include <iostream>

class MyVectorType : public Eigen::VectorXd
{
  public:
	MyVectorType(void)
		: Eigen::VectorXd()
	{
	}

	// This constructor allows you to construct MyVectorType from Eigen expressions
	template<typename OtherDerived>
	MyVectorType(const Eigen::MatrixBase<OtherDerived>& other)
		: Eigen::VectorXd(other)
	{
	}

	// This method allows you to assign Eigen expressions to MyVectorType
	template<typename OtherDerived>
	MyVectorType& operator=(const Eigen::MatrixBase<OtherDerived>& other)
	{
		this->Eigen::VectorXd::operator=(other);
		return *this;
	}
};

int
main()
{
	MyVectorType v = MyVectorType::Ones(4);
	v(2) += 10;
	v = 2 * v;
	std::cout << v.transpose() << std::endl;
}
